﻿using System;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// 列表扩展方法类
/// 提供对List<T>的扩展功能
/// </summary>
public static class ListExtensions
{
    /// <summary>
    /// 从列表中随机抽取并移除一个元素
    /// （模拟从牌堆中抽牌的行为）
    /// </summary>
    /// <typeparam name="T">列表元素类型</typeparam>
    /// <param name="list">目标列表</param>
    /// <returns>被随机抽取的元素，如果列表为空则返回默认值</returns>
    /// <example>
    /// // 从卡牌堆中随机抽一张牌
    /// Card drawnCard = cardList.Draw();
    /// </example>
    public static T Draw<T>(this List<T> list)
    {
        // 空列表检查
        if (list.Count == 0)
        {
            Debug.LogWarning("尝试从空列表中抽取元素");
            return default(T);
        }

        // 生成随机索引（范围：0到count-1）
        int randomIndex = UnityEngine.Random.Range(0, list.Count);

        // 获取并移除元素
        T result = list[randomIndex];
        list.RemoveAt(randomIndex);  // 使用RemoveAt比Remove更高效

        return result;
    }
}



